/**
 * 
 */
package vwg.na.vwm.rh.modulo.managedbeans;

import java.util.List;

import javax.faces.bean.ManagedProperty;

import vwg.na.vwm.rh.motorsdk.sesion.RHSesion;
import vwg.na.vwm.rh.motorsdk.util.componentes.RHBotonAccion;
import vwg.na.vwm.rh.motorsdk.util.componentes.listeners.RHAccionListener;
import vwg.na.vwm.rh.rhmotor.modelo.entidad.Actividad;
import vwg.na.vwm.rh.rhmotor.modelo.entidad.ActividadAccion;
import vwg.na.vwm.rh.rhmotor.modelo.servicio.ActividadServicio;
import vwg.na.vwm.rh.rhmotor.modelo.servicio.FlujoServicio;
import vwg.na.vwm.rh.rhmotor.util.RHConstantes;

public abstract class GenericForm implements RHAccionListener {


	@ManagedProperty(value ="#{botonesMB}")
	private BotonesMB botonesMB;
	@ManagedProperty(value ="#{actividadServicio}")
	private transient ActividadServicio actividadServicio;
	@ManagedProperty(value ="#{flujoServicio}")
	private transient FlujoServicio flujoServicio;
	
	private void initUI() {
		if (botonesMB.getPanelGroup() != null) {
			botonesMB.getPanelGroup().getChildren().clear();
			Actividad actividad = (Actividad) RHSesion
					.getVariableSesion(RHConstantes.ACTIVIDAD_ACTUAL);
			if (actividad != null) {
				List<ActividadAccion> listaAA = flujoServicio
						.getAccionesByActividad(actividadServicio
								.findById(actividad.getActividad()));
				if (listaAA != null) {
					for (ActividadAccion actividadAccion : listaAA) {
						RHBotonAccion cb = new RHBotonAccion(actividadAccion.getAcciones());
						cb.addActionListener(this);
						botonesMB.agregarBoton(cb);
					}	
				}
			}
		}
		
	}

	public void updateControles(){
		initUI();
	}
	
	public BotonesMB getBotonesMB() {
		return botonesMB;
	}

	public void setBotonesMB(BotonesMB botonesMB) {
		this.botonesMB = botonesMB;
	}

	public ActividadServicio getActividadServicio() {
		return actividadServicio;
	}

	public void setActividadServicio(ActividadServicio actividadServicio) {
		this.actividadServicio = actividadServicio;
	}

	public FlujoServicio getFlujoServicio() {
		return flujoServicio;
	}

	public void setFlujoServicio(FlujoServicio flujoServicio) {
		this.flujoServicio = flujoServicio;
	}

}
